home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / rwvector.lha / RWVector2.1 / src / mathpack / dcfftb.f < prev    next >
Text File  |  1989-08-14  |  2KB  |  72 lines

  1.       subroutine dcfftb (n,c,wsave)
  2. c
  3. c     Double precision version.  -tk
  4. c
  5. C***BEGIN PROLOGUE  CFFTB
  6. C***REVISION DATE  811015   (YYMMDD)
  7. C***CATEGORY NO.  D6
  8. C***KEYWORDS FFT,FAST FOURIER TRANSFORM,INVERSE,INVERSE FFT,COMPLEX
  9. C***DATE WRITTEN  FEBRUARY 1978
  10. C***AUTHOR  SWARZTRAUBER P.N. (NCAR)
  11. C***PURPOSE
  12. C INVERSE FFT OF A COMPLEX PERIODIC SEQUENCE
  13. C***DESCRIPTION
  14. C     *****************************************************************
  15. C
  16. C     SUBROUTINE CFFTB(N,C,WSAVE)
  17. C
  18. C     *****************************************************************
  19. C
  20. C     SUBROUTINE CFFTB COMPUTES THE BACKWARD COMPLEX DISCRETE FOURIER
  21. C     TRANSFORM (THE FOURIER SYNTHESIS). EQUIVALENTLY , CFFTB COMPUTES
  22. C     A COMPLEX PERIODIC SEQUENCE FROM ITS FOURIER COEFFICIENTS.
  23. C     THE TRANSFORM IS DEFINED BELOW AT OUTPUT PARAMETER C.
  24. C
  25. C     A CALL OF CFFTF FOLLOWED BY A CALL OF CFFTB WILL MULTIPLY THE
  26. C     SEQUENCE BY N.
  27. C
  28. C     THE ARRAY WSAVE WHICH IS USED BY SUBROUTINE CFFTB MUST BE
  29. C     INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE).
  30. C
  31. C     INPUT PARAMETERS
  32. C
  33. C
  34. C     N      THE LENGTH OF THE COMPLEX SEQUENCE C. THE METHOD IS
  35. C            MORE EFFICIENT WHEN N IS THE PRODUCT OF SMALL PRIMES.
  36. C
  37. C     C      A COMPLEX ARRAY OF LENGTH N WHICH CONTAINS THE SEQUENCE
  38. C
  39. C     WSAVE   A REAL WORK ARRAY WHICH MUST BE DIMENSIONED AT LEAST 4N+1
  40. C             IN THE PROGRAM THAT CALLS CFFTB. THE WSAVE ARRAY MUST BE
  41. C             INITIALIZED BY CALLING SUBROUTINE CFFTI(N,WSAVE) AND A
  42. C             DIFFERENT WSAVE ARRAY MUST BE USED FOR EACH DIFFERENT
  43. C             VALUE OF N. THIS INITIALIZATION DOES NOT HAVE TO BE
  44. C             REPEATED SO LONG AS N REMAINS UNCHANGED THUS SUBSEQUENT
  45. C             TRANSFORMS CAN BE OBTAINED FASTER THAN THE FIRST.
  46. C             THE SAME WSAVE ARRAY CAN BE USED BY CFFTF AND CFFTB.
  47. C
  48. C     OUTPUT PARAMETERS
  49. C
  50. C     C      FOR J=1,...,N
  51. C
  52. C                C(J)=THE SUM FROM K=1,...,N OF
  53. C
  54. C                      C(K)*EXP(I*J*K*2*PI/N)
  55. C
  56. C                            WHERE I=SQRT(-1)
  57. C
  58. C     WSAVE   CONTAINS INITIALIZATION CALCULATIONS WHICH MUST NOT BE
  59. C             DESTROYED BETWEEN CALLS OF SUBROUTINE CFFTF OR CFFTB
  60. C***REFERENCES
  61. C***ROUTINES CALLED  CFFTB1
  62. C***END PROLOGUE  CFFTB
  63.       implicit double precision (a-h,o-z)
  64.       dimension       c(1), wsave(1)
  65. C***FIRST EXECUTABLE STATEMENT  CFFTB
  66.       if (n .eq. 1) return
  67.       iw1 = n+n+1
  68.       iw2 = iw1+n+n
  69.       call dcfftb1 (n,c,wsave,wsave(iw1),wsave(iw2))
  70.       return
  71.       end
  72.